home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / B-Book Series / (k)b8.d64 / circle2.l < prev    next >
Text File  |  2007-02-28  |  1KB  |  59 lines

  1. 0010 // IMPROVED CIRCLE
  2. 0020 SETGRAPHIC 0
  3. 0030 HIDETURTLE 
  4. 0040 FULLSCREEN 
  5. 0050 PENCOLOR 1
  6. 0060 BACKGROUND 0
  7. 0070 CLEAR 
  8. 0080 BORDER 15
  9. 0090 FOR RADIUS:=10 TO 100 STEP 10 DO
  10. 0100 AT'X0:=119
  11. 0110 AT'Y0:=100
  12. 0120 CIRCLE(RADIUS,AT'X0,AT'Y0)
  13. 0130 ENDFOR RADIUS
  14. 0140 END 
  15. 0150 PROC CIRCLE(RADIUS,X0,Y0) CLOSED
  16. 0160 // DRAW CIRCLE OF GIVEN RADIUS
  17. 0170 //   CENTERED AT X0, Y0
  18. 0180 // J. MICHENER ALGORITHM
  19. 0190 X:=0; Y:=RADIUS
  20. 0200 D:=3-2*RADIUS
  21. 0210 WHILE X<Y DO
  22. 0220 PLOT'SYM'POINTS(X,Y,X0,Y0)
  23. 0230 IF D<0 THEN
  24. 0240 D:=D+4*X+6
  25. 0250 ELSE 
  26. 0260 D:=D+4*(X-Y)+10
  27. 0270 Y:=Y-1
  28. 0280 ENDIF 
  29. 0290 X:=X+1
  30. 0300 ENDWHILE 
  31. 0310 IF X=Y THEN PLOT'SYM'POINTS(X,Y,X0,Y0)
  32. 0320 ENDPROC CIRCLE
  33. 0330 PROC PLOT'SYM'POINTS(X,Y,X0,Y0) CLOSED
  34. 0340 XX:=X; YY:=Y
  35. 0350 XY:=Y; YX:=X
  36. 0360 ADJUST(X0,Y0)
  37. 0370 ADJUST(XX,YY)
  38. 0380 ADJUST(XY,YX)
  39. 0390 PLOT X0+XX,Y0+YY
  40. 0400 PLOT X0+XY,Y0+YX
  41. 0410 PLOT X0+XX,Y0-YY
  42. 0420 PLOT X0+XY,Y0-YX
  43. 0430 PLOT X0-XX,Y0-YY
  44. 0440 PLOT X0-XY,Y0-YX
  45. 0450 PLOT X0-XX,Y0+YY
  46. 0460 PLOT X0-XY,Y0+YX
  47. 0470 ENDPROC PLOT'SYM'POINTS
  48. 0480 PROC ADJUST(REF X,REF Y) CLOSED
  49. 0490 SCRUNCH:=1.34
  50. 0500 // NOTE: USING A SCRUNCH FACTOR
  51. 0510 //   CORRECTS THE DIFFERENCE IN
  52. 0520 //   VERTICAL AND HORIZONTAL UNITS
  53. 0530 //
  54. 0540 //   MAX X IS REDUCED TO  238
  55. 0550 //   HORIZONTAL CENTER IS 119
  56. 0560 //
  57. 0570 X:=SCRUNCH*X
  58. 0580 ENDPROC ADJUST
  59.